package com.tedu.API.io;

import java.io.*;
import java.util.Scanner;

/**
 * 练习: 做一个笔记本程序
 *
 * 需求: 程序开始之后要求用户在控制台下输入一个文件名，假设用户输入: a.txt
 *      然后针对文件进行读写操作，用户一行行输入文本【控制台】
 *      保存到a.txt里
 *      用户可以一直输入对应文本，直到日湖输入内容为"退出"/"exit"程序结束
 *      保存a.txt生成在 API  项目下
 */
public class Note {
    //主方法: 直接写文件  相对路径: a.txt  根级路径---指定API下
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
        //1.创建扫描器---控制台--用户输入: 文件名
        //扫描器类---功能: 形成在控制台，卡住---等待用户输入文本
        Scanner input=new Scanner(System.in);
        System.out.println("请输入文件名: ");
        //nextLine() 获取从控制台输入一行文本内容
        String text=input.nextLine();
       // System.out.println(text);  //打桩
        //2.控制台输入文件名---通过输出流---写出---一行一行【高级流】  ./API/a.txt
        FileOutputStream fos=new FileOutputStream("API"+ File.separator +text);
        //高级流---转换流: 指定编码集---缓冲流: 高效---字符输出流
        OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF8");
        BufferedWriter bw=new BufferedWriter(osw);
        PrintWriter pw=new PrintWriter(bw);
        //3.控制台输入: 文本内容---对每行文本内容写出
        System.out.println("请开始输入内容【exit/退出】: ");
        //3.1 用户一直输入:直到用户输入"exit/退出"结束程序
        String line=null;   //先定义   死循环外---①赋值 ②减少内存开销
        while (true){
            line=input.nextLine();  //从控制台获取一行文本
            //控制台输入文本--判断，如果输入文本: exit或者退出【退出】
            if (line.equals("退出")||line.equals("exit")){
                break;  //打断---程序跳出
            }
            //写出 line  文本
            pw.println(line);
        }
        System.out.println("拜拜~~~.请查看API项目目录下");
        pw.close();
        //关闭高级流---缓冲字符流: 【缓冲流】 关闭流---调用flush
        //针对传输文本
    }
}
